package com.ruoyi.pos.domain.payment;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * POS支付方式柜组关系实体类
 * 
 * 用于管理支付方式与柜组的关联关系，支持不同柜组的个性化支付方式配置
 * 
 * @author POS System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PosPaymentTypeGroup extends BaseEntity {
    
    private static final long serialVersionUID = 1L;

    /**
     * 关系ID（主键）
     */
    private Long relationId;

    /**
     * 支付方式ID
     */
    @Excel(name = "支付方式ID")
    @NotNull(message = "支付方式ID不能为空")
    private Long typeId;

    /**
     * 柜组ID（对应sys_dept表）
     */
    @Excel(name = "柜组ID")
    @NotNull(message = "柜组ID不能为空")
    private Long groupId;

    /**
     * 是否启用(0否 1是)
     */
    @Excel(name = "是否启用", readConverterExp = "0=否,1=是")
    private String isEnabled; 
    /**
     * 排序号
     * 
     * 用于控制该柜组中支付方式的显示顺序
     */
    @Excel(name = "排序号")
    private Integer sortOrder;
 

    /**
     * 配置参数(JSON格式)（柜组特定）
     * 
     * 如果为空，则使用支付方式定义中的默认值
     */
    @Excel(name = "配置参数")
    private String configParams;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remark;

    // ==================== 扩展字段 ====================

    /**
     * 支付方式编码（非数据库字段）
     */
    private String typeCode;

    /**
     * 支付方式名称（非数据库字段）
     */
    private String typeName;

    /**
     * 支付方式图标（非数据库字段）
     */
    private String typeIcon;

    /**
     * 柜组名称（非数据库字段）
     */
    private String groupName;

    /**
     * 柜组编码（非数据库字段）
     */
    private String groupCode;

    // ==================== 业务方法 ====================

    /**
     * 判断是否启用
     */
    public boolean isEnabled() {
        return "1".equals(this.isEnabled);
    }
 

    /**
     * 获取有效的配置参数
     * 
     * @param defaultConfigParams 支付方式定义中的默认配置参数
     * @return 有效的配置参数
     */
    public String getEffectiveConfigParams(String defaultConfigParams) {
        return this.configParams != null ? this.configParams : defaultConfigParams;
    }

    // ==================== 备用扩展字段 ====================
    
    /**
     * 备用字段1
     */
    private String reserved1;

    /**
     * 备用字段2
     */
    private String reserved2;

    /**
     * 备用字段3
     */
    private String reserved3;

    /**
     * 备用字段4
     */
    private String reserved4;

    /**
     * 备用字段5
     */
    private String reserved5;
}
